/*
 * Joana Santos
 * santosjo24@gmail.com
 */
package vue;

import controlleur.ControleurDeJeu;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Vue permettant d'afficher plusieurs images expliquant les règles du jeu.
 *
 * @author Antoine Thorr, Joana Santos, Samy Rida, Vicky Ngo Pagbe
 */
public class Regle extends JFrame {

    private JPanel Fond;
    private JPanel Boutons;
    private ImageIcon[] images;
    private ControleurDeJeu cjeu;
    private int indice = 0;
    private JLabel labelImageFond;
    private JButton precedent;
    private JButton suivant;
    private JButton passer;

    /**
     * Constructeur de la vue qui permet de créer et placer tout les élements
     * necessaires à l'affichage. Si l'on passe les règles on est directement
     * renvoyer au Menu.
     *
   * @param cjeu
     * @throws IOException
     */
    public Regle(ControleurDeJeu cjeu) throws IOException {
        super();
        this.cjeu = cjeu;
        //Création de la fenêtre
        setTitle("Hackunamadata");
        setSize(1300, 700);
        setLocationRelativeTo(null);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setUndecorated(true);

        this.setLayout(new BorderLayout());
        this.Boutons = new JPanel();
        this.Fond = new JPanel();
        this.labelImageFond = new JLabel();

        //Ajout des images dans un tableau
        images = new ImageIcon[9];
        for (int i = 0; i < images.length; i++) {
            images[i] = new ImageIcon("sprite/ecran" + i + ".jpg");
        }
        //Fonction qui ajoute les boutons
        ajoutBoutons();

        //On place la première image
        chargerImageDeFond(images[this.indice]);

        //On ajoute les panels à la frame
        this.add(this.Fond, "Center");
        this.add(this.Boutons, "South");
        setVisible(true);
    }

    /**
     * Permet de charger les images et les placer en fond
     *
     * @param i
     */
    private void chargerImageDeFond(ImageIcon i) {
        this.Fond.remove(this.labelImageFond);
        labelImageFond.setIcon(i);
        this.Fond.add(this.labelImageFond);
        this.Fond.updateUI();
    }

    /**
     * Ajoute les boutons suivant, précedent, passer et leurs actions.
     */
    private void ajoutBoutons() {
        FlowLayout fl = new FlowLayout();
        fl.setHgap(40);
        this.Boutons.setLayout(fl);

        //Boutons Précédent
        precedent = new JButton();
        precedent.setIcon(new ImageIcon("sprite/precedent.png"));
        precedent.setContentAreaFilled(false);
        precedent.setBorder(null);
        precedent.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                if (Regle.this.indice == 0) {
                    //TODO - Bouton "grisé"
                } else {
                    Regle.this.indice--;
                    Regle.this.chargerImageDeFond(Regle.this.images[Regle.this.indice]);
                }

            }
        });
        //Boutons Suivant
        suivant = new JButton();
        suivant.setIcon(new ImageIcon("sprite/suivant.png"));
        suivant.setContentAreaFilled(false);
        suivant.setBorder(null);

        suivant.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                if (Regle.this.indice < images.length - 1) {
                    Regle.this.indice++;
                    Regle.this.chargerImageDeFond(Regle.this.images[Regle.this.indice]);
                } else {
                    //TODO Bouton "grisé"
                }

            }
        });

        //Bouton Passer les règles.
        passer = new JButton();
        passer.setIcon(new ImageIcon("sprite/passer.png"));
        passer.setContentAreaFilled(false);
        passer.setBorder(null);

        passer.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                try {
                    Menu m = new Menu(Regle.this.cjeu);
//                    Frame f = new Frame(Regle.this.cjeu);
                    Regle.this.dispose();
//                    System.exit(1);
                } catch (IOException ex) {
                    Logger.getLogger(Regle.class.getName()).log(Level.SEVERE, null, ex);
                }

            }
        });
        passer.setLocation(new Point(200, 400));

        this.Boutons.add(precedent);
        this.Boutons.add(suivant);
        this.Boutons.add(passer);
    }

}
